package inabit.impl.data.types;

import inabit.data.VariableType;
/**@author Rafael Rocha*/
public class EnumeratedType implements VariableType{
	private String[] possibleValues;
	public EnumeratedType(String... possibleValues){
		this.possibleValues = possibleValues;
	}
	@Override
	public String getVarValue(String value) {
		return value;
	}
	@Override
	public boolean isAcceptableValue(String value) {
		for(int i = 0; i < possibleValues.length; i++){
			if(possibleValues[i].equals(value)){
				return true;
			}
		}
		return false;
	}
	public String[] getPossibleValues() {
		return possibleValues;
	}
	@Override
	public boolean isNumeric() {
		return false;
	}
	@Override
	public String getName() {
		return "enumerated";
	}
	private String stringList(String[] values) {
		String result = "";
		for(int i = 0 ; i < values.length; i++) {
			if(i > 0) {
				result += ", ";
			}
			result += values[i];
		}
		return result;
	}
	@Override
	public String getExtendedName() {
		return "enumerated(" + stringList(possibleValues) + ")";
	}
}
